package com.ruoyi.sfproduct.service;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.sfproduct.domain.LwSfproduct;
import com.ruoyi.sfproduct.domain.vo.MaterialVo;

/**
 * 半成品Service接口
 * 
 * @author sll
 * @date 2023-08-09
 */
public interface ILwSfproductService 
{
    /**
     * 查询半成品
     * 
     * @param sfproductId 半成品主键
     * @return 半成品
     */
    public LwSfproduct selectLwSfproductBySfproductId(Long sfproductId);

    /**
     * 查询半成品列表
     * 
     * @param lwSfproduct 半成品
     * @return 半成品集合
     */
    public List<LwSfproduct> selectLwSfproductList(LwSfproduct lwSfproduct);

    /**
     * 新增半成品
     * 
     * @param lwSfproduct 半成品
     * @return 结果
     */
    public int insertLwSfproduct(LwSfproduct lwSfproduct);

    /**
     * 修改半成品
     * 
     * @param lwSfproduct 半成品
     * @return 结果
     */
    public int updateLwSfproduct(LwSfproduct lwSfproduct);

    /**
     * 批量删除半成品
     * 
     * @param sfproductIds 需要删除的半成品主键集合
     * @return 结果
     */
    public int deleteLwSfproductBySfproductIds(Long[] sfproductIds);

    /**
     * 删除半成品信息
     * 
     * @param sfproductId 半成品主键
     * @return 结果
     */
    public int deleteLwSfproductBySfproductId(Long sfproductId);

    public List<MaterialVo> selectMaterialVoBySfproductId(Long sfproductId);


    MaterialVo selectMaterialAndSfproduct(Long sfproductId, Long materialId);

    int addMaterials(MaterialVo materialVo);

    int updateMaterials(MaterialVo materialVo);

    int delMaterial(Long sfproductId, Long materialId);

    /**
     * 导入用户数据
     *
     * @param materialVoList 数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importData(List<MaterialVo> materialVoList, Boolean isUpdateSupport, String operName) throws Exception;

    void transmissionSfpID(Long sfproductId);

    int overAgain(Long sfproductId);
}
